🚀 Construction d'un Cluster de Calcul avec Raspberry Pi 🖥️

Ce tutoriel vous guide à travers les étapes nécessaires pour construire un cluster de calcul à l'aide de plusieurs Raspberry Pi, créant ainsi un puissant système de calcul distribué à faible coût.

🔧 Prérequis

🛠️ Étape 1 : Préparation des Raspberry Pi

Commencez par mettre à jour chaque Raspberry Pi :

sudo apt-get update
sudo apt-get upgrade

Ensuite, vous pouvez configurer chaque Raspberry Pi avec un script pour automatiser certaines tâches :

# Script de configuration initiale pour Raspberry Pi
#!/bin/bash
sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install -y vim htop git
sudo raspi-config nonint do_hostname $1
sudo systemctl enable ssh

Utilisez ce script pour configurer le nom d'hôte et activer SSH sur chaque Raspberry Pi. Remplacez $1 par le nom d'hôte souhaité.

🌐 Étape 2 : Configuration du Réseau

Connectez tous les Raspberry Pi au switch réseau en utilisant des câbles Ethernet. Assurez-vous que chaque Pi a une adresse IP unique.

Vous pouvez utiliser un autre script pour fixer les adresses IP :

# Script pour configurer une adresse IP statique
#!/bin/bash
sudo cp /etc/dhcpcd.conf /etc/dhcpcd.conf.backup
echo "interface eth0" | sudo tee -a /etc/dhcpcd.conf
echo "static ip_address=$1/24" | sudo tee -a /etc/dhcpcd.conf
echo "static routers=$2" | sudo tee -a /etc/dhcpcd.conf
echo "static domain_name_servers=$3" | sudo tee -a /etc/dhcpcd.conf
sudo systemctl restart dhcpcd

Exécutez ce script sur chaque Pi en fournissant l'adresse IP, la passerelle (généralement l'adresse du routeur), et le serveur DNS.

📦 Étape 3 : Installation de MPI (Message Passing Interface)

Installez OpenMPI sur chaque Raspberry Pi :

sudo apt-get install -y mpich

🔐 Étape 4 : Configuration SSH

Configurez les clés SSH pour permettre une connexion sans mot de passe entre les Pi :

ssh-keygen
ssh-copy-id pi@<adresse_ip_du_pi>

Pour automatiser cela, vous pouvez créer un script qui génère les clés et les distribue à chaque nœud :

# Script pour configurer SSH sans mot de passe
#!/bin/bash
ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa
for ip in "$@"
do
    ssh-copy-id pi@$ip
done

Utilisez ce script en passant les adresses IP de chaque Raspberry Pi comme paramètres.

⚙️ Étape 5 : Test du Cluster MPI

Créez un fichier "hostfile" listant les adresses IP de tous les Pi :

nano hostfile

Ajoutez les adresses IP de tous les Pi dans ce fichier. Ensuite, testez le cluster :

mpirun -np 4 --hostfile hostfile hostname

Cette commande devrait afficher le nom d'hôte de chaque Pi dans le cluster.

🖥️ Étape 6 : Exécution d'un Programme MPI

Créez un programme simple en C utilisant MPI :

#include <mpi.h>
#include <stdio.h>

int main(int argc, char** argv) {
    MPI_Init(NULL, NULL);
    int world_size;
    MPI_Comm_size(MPI_COMM_WORLD, &world_size);
    int world_rank;
    MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);
    printf("Hello world from processor %d of %d\n", world_rank, world_size);
    MPI_Finalize();
}

Compilez et exécutez ce programme sur le cluster :

mpicc -o hello_mpi hello_mpi.c
mpirun -np 4 --hostfile hostfile ./hello_mpi

Vous devriez voir un message de chaque Pi indiquant son rang et la taille totale du monde.

🔧 Dépannage et Optimisation

Si vous rencontrez des problèmes lors de la configuration du cluster, voici quelques conseils :

🎉 Conclusion

Félicitations ! Vous avez maintenant un cluster de calcul fonctionnel utilisant plusieurs Raspberry Pi. Utilisez ce cluster pour des tâches de calcul intensif, des simulations ou pour apprendre les principes de base du calcul distribué.